export function uuid4() {
    // 定义UUIDv4的字符集
    const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
    const uuid = []

    // 使用crypto.getRandomValues生成16个字节的随机数
    const bytes = new Uint8Array(16)
    crypto.getRandomValues(bytes)

    // 设置UUIDv4的版本（第4位为4）和变体（第6、7位为01）
    bytes[6] = (bytes[6] & 0x0f) | 0x40
    bytes[8] = (bytes[8] & 0x3f) | 0x80

    // 将每个字节转换为两个十六进制字符，并添加到UUID数组中
    for (let i = 0; i < 16; i++) {
        uuid[i] = chars[bytes[i] >> 4]
        uuid[i + 16] = chars[bytes[i] & 0x0f]
    }

    // 格式化UUID字符串，插入短横线
    return (
        uuid.join('').slice(0, 8) +
        '-' +
        uuid.join('').slice(8, 12) +
        '-' +
        uuid.join('').slice(12, 16) +
        '-' +
        uuid.join('').slice(16, 20) +
        '-' +
        uuid.join('').slice(20)
    )
}
